package br.com.financas.controle;

import br.com.financas.beans.Conta;
import br.com.financas.beans.Pessoa;
import br.com.financas.beans.TipoConta;
import br.com.financas.daos.ContaDao;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;

/**
 *
 * @author Denis
 */
@ManagedBean
@ViewScoped

public class ContaMB {

    private Conta conta = new Conta();
    private Pessoa pessoa = new Pessoa();
    private TipoConta tipo = new TipoConta();
    private Conta contaEdit = new Conta();
    private ContaDao contaDao = new ContaDao();
    private String idTipo;
    List<Conta> listarContas;

    public ContaMB() {
    }
    Pessoa p = (Pessoa) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"); //capturando o id do usuario logado

    public void addConta(AjaxBehaviorEvent event) throws IOException {
        tipo.setIdTipoConta(Integer.parseInt(idTipo));
        contaDao.addConta(conta, tipo, p);
        FacesContext.getCurrentInstance().getExternalContext().redirect("contas.xhtml");
        conta.setNome(null);
        conta.setSaldo(null);
        conta.setIdConta(null);
    }
    public void addContaM(AjaxBehaviorEvent event) throws IOException {
        tipo.setIdTipoConta(Integer.parseInt(idTipo));
        contaDao.addConta(conta, tipo, p);
        FacesContext.getCurrentInstance().getExternalContext().redirect("inicio.xhtml");
        conta.setNome(null);
        conta.setSaldo(null);
        conta.setIdConta(null);
    }

    public void editarConta(Conta conta) {
        this.contaEdit = conta;
    }
    public void atualizarConta(AjaxBehaviorEvent event) throws IOException {
        tipo.setIdTipoConta(Integer.parseInt(idTipo));
        contaDao.updateConta(contaEdit,tipo);
        FacesContext.getCurrentInstance().getExternalContext().redirect("contas.xhtml");
    }

    public void deletarConta(Conta conta) {
        contaDao.deletarConta(conta);
    }

    public List listarContas() {
        listarContas = contaDao.listar(p);
        return this.listarContas;
    }

    public List<SelectItem> getlistaContaCombo() {
        listarContas = contaDao.listarCombo(p);
        List<SelectItem> itens = new ArrayList<>(listarContas.size());

        for (Conta c : listarContas) {
            itens.add(new SelectItem(c.getIdConta(),c.getNome()));
        }
        return itens;
    }

    public Conta getConta() {
        return conta;
    }

    public void setConta(Conta conta) {
        this.conta = conta;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public TipoConta getTipo() {
        return tipo;
    }

    public void setTipo(TipoConta tipo) {
        this.tipo = tipo;
    }

    public String getIdTipo() {
        return idTipo;
    }

    public void setIdTipo(String idTipo) {
        this.idTipo = idTipo;
    }

    public Conta getContaEdit() {
        return contaEdit;
    }

    public void setContaEdit(Conta contaEdit) {
        this.contaEdit = contaEdit;
    }
}